home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / cocktail / lalr.lha / lalr / src / lalr.mi < prev    next >
Text File  |  1992-08-18  |  3KB  |  110 lines

  1. (* $Id: lalr.mi,v 2.4 1992/08/07 15:22:49 grosch rel $ *)
  2.  
  3. (* $Log: lalr.mi,v $
  4.  * Revision 2.4  1992/08/07  15:22:49  grosch
  5.  * allow several scanner and parsers; extend module Errors
  6.  *
  7.  * Revision 2.3  1992/01/30  14:08:30  grosch
  8.  * redesign of interface to operating system
  9.  *
  10.  * Revision 2.2  1991/11/21  14:53:14  grosch
  11.  * new version of RCS on SPARC
  12.  *
  13.  * Revision 2.1  91/09/23  11:48:28  grosch
  14.  * renamed module LALR to Lookahead
  15.  * 
  16.  * Revision 2.0  91/03/08  18:31:52  grosch
  17.  * turned tables into initialized arrays (in C)
  18.  * moved mapping tokens -> strings from Errors to Parser
  19.  * changed interface for source position
  20.  * 
  21.  * Revision 1.2  90/06/12  16:54:36  grosch
  22.  * renamed main program to lalr, added { } for actions, layout improvements
  23.  * 
  24.  * Revision 1.1     89/02/24  14:03:37  vielsack
  25.  * BeginSource is no longer called
  26.  * 
  27.  * Revision 1.0     88/10/04  14:36:20  vielsack
  28.  * Initial revision
  29.  * 
  30.  *)
  31.  
  32. MODULE lalr;
  33.  
  34. FROM ArgCheck    IMPORT Generate, ArgCheck, GenerateSupport, Pars, Def, TEST;
  35. FROM Automaton    IMPORT IsBnf, InitAutomaton;
  36. FROM Check    IMPORT CheckForConflicts;
  37. FROM Errors    IMPORT eError, ErrorCount, ErrorTable, ErrorMessage, BeginErrors, CloseErrors;
  38. FROM Gen    IMPORT GenDefaultActions, GenCode;
  39. FROM Infos    IMPORT WriteInfo;
  40. FROM IO        IMPORT tFile, StdOutput, WriteNl, WriteS, CloseIO;
  41. FROM Lookahead    IMPORT NoConflict, ComputeLALR;
  42. FROM LR        IMPORT ComputeLR;
  43. FROM Parser    IMPORT Parser;
  44. FROM Path    IMPORT InsertPath;
  45. FROM Reduce    IMPORT Reduced, TestReduced;
  46. FROM Scanner    IMPORT BeginScanner;
  47. FROM Strings    IMPORT tString, ArrayToString, StringToInt;
  48. FROM StringMem    IMPORT InitStringMemory;
  49. FROM Idents    IMPORT InitIdents;
  50. FROM System    IMPORT Exit;
  51. FROM TokenTab    IMPORT InitTokenTable;
  52. FROM WriteTok    IMPORT tLanguage, Language;
  53.  
  54. CONST ErrorTab = 'ErrorTab';
  55.  
  56. VAR
  57.   errors : INTEGER;
  58.   Status : INTEGER;
  59.   GoOn     : BOOLEAN;
  60.  
  61. BEGIN
  62.   ErrorTable := ErrorTab;
  63.   InsertPath (ErrorTable);
  64.   InitStringMemory;
  65.   InitIdents;
  66.   BeginErrors;
  67.   ArgCheck;
  68.   GoOn := Generate;
  69.  
  70.   IF GoOn THEN
  71.     GenDefaultActions;
  72.     InitTokenTable;
  73.     BeginScanner;
  74.     errors := Parser ();
  75.     GenerateSupport;
  76.     GoOn := ErrorCount [eError] = 0;
  77.   END;
  78.  
  79.   IF GoOn THEN
  80.     InitAutomaton;
  81.     GoOn := IsBnf;
  82.   END;
  83.  
  84.   IF GoOn THEN
  85.     TestReduced;
  86.     GoOn := Reduced;
  87.   END;
  88.  
  89.   IF GoOn THEN
  90.     ComputeLR;
  91.   END;
  92.  
  93.   IF GoOn THEN
  94.     ComputeLALR;
  95.     GoOn := NoConflict;
  96.   END;
  97.  
  98.   IF GoOn THEN
  99.     GenCode (Pars, Def);
  100.     Status := 0;
  101.   ELSE
  102.     Status := 1;
  103.   END;
  104.  
  105.   CloseErrors;
  106.   IF TEST AND GoOn THEN WriteInfo (StdOutput); END;
  107.   CloseIO;
  108.   Exit (Status);
  109. END lalr. 
  110.